/*
 * template_specialization.h
 *
 *  Created on: 2020年12月15日
 *      Author: san
 */

#ifndef TEMPLATES_HEADER_TEMPLATE_SPECIALIZATION_H_
#define TEMPLATES_HEADER_TEMPLATE_SPECIALIZATION_H_

#include <string>

#include "Sales_data.h"

namespace std {

template <>
struct hash<Sales_data>
{
	// 用来散列一个无序容器的类型必须定义下列类型
	typedef size_t result_type;
	typedef Sales_data argument_type;
	size_t operator() (const Sales_data &s) const;
	// 我们的类使用合成的拷贝控制/默认构造
};

size_t hash<Sales_data>::operator () (const Sales_data &s) const
{
	return hash<string>() (s.bookNo) ^
			hash<string>() (s.units_sold) ^
			hash<double>() (s.revenue);
}

}   // namespace std



#endif /* TEMPLATES_HEADER_TEMPLATE_SPECIALIZATION_H_ */
